home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / program / amos / amcafext.lha / AMCAF_Examples / Splinters.AMOS / Splinters.amosSourceCode
AMOS Source Code  |  1995-07-14  |  3KB  |  90 lines

  1. ' ************************************* Commands used: 
  2. ' *                                   * =Count Pixels      Splinters Max 
  3. ' *           Amcaf Examples          * Coords Bank        Splinters Fuel
  4. ' *           Splinters V1.1          * Coords Read        Splinters Init
  5. ' *      Written by Chris Hodges      * Splinters Bank     Splinters Double Do 
  6. ' *                                   * Splinters Colour   =Splinters Active 
  7. ' ************************************* Splinters Limit
  8. '                          
  9. ' First load some GFX to destroy :)
  10. Load Iff "Data/AMCAFSmall.iff",0
  11. Curs Off : Paper 0 : Pen 1
  12. Double Buffer 
  13. Autoback 1
  14. ' Limit mouse to full screen. Wait Vbl ensures that Limit Mouse works
  15. ' correctly. 
  16. Wait Vbl 
  17. Limit Mouse 
  18. ' Set writing mode to xor for rubber banding.
  19. Gr Writing 2
  20. Repeat 
  21.   ' Get the rectanguar area to be exploded.
  22.   Gosub FETCHCOORDS
  23.   ' Now count how many pixels are in this area.  
  24.   NUMPIX= Extension_8_0CF2(0,0,X1,Y1 To X2,Y2)
  25.   ' Check if there are any, and then let them explode. 
  26.   If NUMPIX
  27.     ' Reserve a bank to hold the coords. 
  28.      Extension_8_0D10 9,NUMPIX
  29.     ' Read them in.
  30.      Extension_8_0D2E 0,0,X1,Y1 To X2,Y2,9,1
  31.     ' Now reserve a bank for the splinters.  
  32.      Extension_8_0D4E 10,NUMPIX
  33.     ' Limit the splinters to the full screen.
  34.      Extension_8_0D66 
  35.     ' Set the colour which will be left and the number of bitplanes. 
  36.      Extension_8_0DB8 0,4
  37.     ' Adjust the gravity.
  38.      Extension_8_0D8A 1,4
  39.     ' Set the maximum of pixel which can explode per frame or -1 for all.
  40.      Extension_8_0E62 -1
  41.     ' Set the number of frames the splinters fly, or -1 for screen 
  42.     ' limits only. 
  43.      Extension_8_0F2A -1
  44.     ' Initialise the splinters bank. 
  45.      Extension_8_0DA4 
  46.     ' Main loop... 
  47.     Repeat 
  48.       Screen Swap : Wait Vbl 
  49.       ' Splinters Double Do does following steps.
  50.       ' 1. Splinters Double Del: Removes all old splinters and restores the  
  51.       '                          background. 
  52.       ' 2. Splinters Move      : Moves the splinters one single step.
  53.       ' 3. Splinters Back      : Saves the background pixels.
  54.       ' 4. Splinters Draw      : Plots every dot to the screen.
  55.        Extension_8_0DEC 
  56.     Until Extension_8_0F40 =0
  57.   End If 
  58. Until Inkey$<>""
  59. Screen Close 0
  60. End 
  61. FETCHCOORDS:
  62.   ' Now ask for the upper left edge coordinates
  63.   Home : Print "Click mouse at the upper left corner."
  64.   ' Wait for click 
  65.   Repeat : Multi Wait : Until Mouse Key
  66.   ' Get coords x1,y1 
  67.   X1=X Screen(X Mouse)
  68.   Y1=Y Screen(Y Mouse)
  69.   ' Clear line and wait for release. 
  70.   Home : Cline 
  71.   Print "Click mouse at the lower right corner."
  72.   While Mouse Key : Multi Wait : Wend 
  73.   ' Draw rubber band until mouse is pressed. 
  74.   Repeat 
  75.     X2=X Screen(X Mouse)
  76.     Y2=Y Screen(Y Mouse)
  77.     Box X1,Y1 To X2,Y2
  78.     Multi Wait 
  79.     Box X1,Y1 To X2,Y2
  80.   Until Mouse Key
  81.   ' Clear line and wait until mouse button released. 
  82.   Home : Cline 
  83.   While Mouse Key : Multi Wait : Wend 
  84.   ' Check if coors must be swapped.
  85.   If X2<X1 Then Swap X1,X2
  86.   If Y2<Y1 Then Swap Y1,Y2
  87.   ' As the coordsbase is 1,1, add one pixel to each coordinate.
  88.   Add X2,1
  89.   Add Y2,1
  90. Return